/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */


import java.io.*;
import java.net.*;
import java.util.Iterator;
import java.util.Scanner;
import java.util.Vector;


/**
 *
 * @author marduke
 */
public class Nodo {

    int DEFAULT = 1800;

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) throws Exception {
        int puerto;
        String maquinas;
        String archivoTraza;
        String directorio;
        Vector<String> vectorMaquinas = new Vector();
        File archivos[] = new File[1];
        Vector<String> vectorArchivos = new Vector();

        // TODO code application logic here
        if (args.length != 8) {
            System.out.println("Faltan argumentos en la corrida.\n"
                    + "Deberia ser:\n"
                    + "nodo -p <puerto> -f <maquinas> -l <archivoTrazas> -d "
                    + "<directorio> \n"
                    + "Donde \n"
                    + "<puerto>: es el puerto por el cual estar'a escuchando el"
                    + " servidor.\n <maquinas>: es el nombre dela rchivo donde"
                    + " estaran especificados los nombre o direcciones IP de "
                    + "los nodos vecinos.\n <archivoTrazas>: nombre del archivo "
                    + "de texto donde el servidor escribirá la información sobre"
                    + " las operaciones realizadas: consultas recibidas, de quien"
                    + " las recibi,o, peticion de archivos.\n<directorio>: nombre"
                    + " del directoria donde estaran los archivos JPG y XML que"
                    + " representan las fotos, como se explic'o anteriormente.");
        } else {

            puerto = Integer.parseInt(args[1]);
            maquinas = args[3];
            archivoTraza = args[5];
            directorio = args[7];

            try {
                Scanner vecinos = new Scanner(new File(maquinas));
                while (vecinos.hasNext()) {
                    vectorMaquinas.add(vecinos.next());

                }

            } catch (FileNotFoundException fileExepction) {
                System.out.println("El archivo de maquinas no existe.");
            }

            try {
                File dirFile = new File(directorio);
                if (dirFile.exists()) {
                    if (dirFile.isDirectory()) {
                        System.out.println("Es un directorio");
                        archivos = dirFile.listFiles();
                    } else {
                        System.out.println("No es un directorio");
                    }
                } else {

                    report(dirFile.mkdir());
                    archivos = dirFile.listFiles();
                }

                for (int i = 0; i < archivos.length; i++) {
                    File file = archivos[i];
                    String nFile = file.getName();
                    String hola[];
                    if (nFile.contains(".xml")) {
                        hola = nFile.split(".xml");
                        vectorArchivos.add(hola[0]);
                    }

                }

                Iterator<String> ite = vectorArchivos.iterator();
                for (Iterator<String> it = vectorArchivos.iterator(); it.hasNext();) {
                    String string = it.next();
                    System.out.println(string);


                }

            } catch (Exception e) {
            }

            Thread hilo = new Thread(new ServidorNodo(vectorMaquinas,vectorArchivos,directorio));
            hilo.start();
            Servidor servidor = new Servidor(puerto, vectorMaquinas,vectorArchivos,directorio);

            while (true) {
                servidor.run();
            }
        }
    }
    

    static void report(boolean b) {
        System.out.println(b ? "success" : "failure");
    }
}
